Video generation systems within computer systems generally use a large amount of memory and a large amount of memory bandwidth. At the very minimum, a video display adapter within a computer system requires a frame buffer that stores a digital representation of the desktop image currently being rendered on the video display screen. The central processing unit (CPU) or graphics processing unit (GPU) of the computer system must access the frame buffer to change the desktop image in response to user inputs and the execution of application programs. Simultaneously, the entire frame buffer is read by the video display adapter at rates of 60 times per second or higher to render the desktop image in the frame buffer on a video display screen. The combined accesses of the CPU (or GPU) updating the image to display and the video display adapter reading out the image in order to render a video output signal use a significant amount of memory bandwidth.
In addition to those minimum requirements, there are other video functions of a computer system that may consume processing cycles, memory capacity, and memory bandwidth. For example, three-dimensional (3D) graphics, full-motion video, and graphical overlays may all need to be handled by the CPU (or GPU), the video memory system, and the video display adapter.
Many computer systems now include special three-dimensional (3D) graphics rendering systems that read information from 3D models and render a two-dimensional (2D) representation in the frame buffer that will be read by the video display adapter for display on the video display system. The reading of the 3D models and rendering of a two-dimensional representation may consume a very large amount of memory bandwidth. Thus, computer systems that will do a significant amount of 3D rendering generally have separate specialized 3D rendering systems that use a separate 3D memory area. Some computer systems use ‘double-buffering’ wherein two frame buffers are used. In double-buffering systems, the CPU generates one image in a frame buffer that is not being displayed while another frame buffer is being displayed on the video display screen. When the CPU completes the new image, the system switches from a frame buffer currently being displayed to the frame buffer that was just completed. This technique eliminates the effect of ‘screen tearing’ wherein an image is changed while being displayed.
Furthermore, the video output systems of modern computer systems generally need to display full-motion video. Full-motion video systems decode and display full-motion video clips such as clips of television programming or film on the computer display screen for the user. (This document will use the term ‘full-motion video’ when referring to such television or film clips to distinguish such full-motion video from the reading of normal desktop graphics for the generation of a video signal to display on a video display monitor.) Full-motion video is generally represented in digital form as computer files containing encoded video or an encoded digital video stream received from an external source.
To display digitally encoded full-motion video, the computer system must first decode the full-motion video to obtain a series of video image frames. Then the computer system needs to merge the full-motion video with desktop image data stored within the computer systems main frame buffer. Due to all of the processing steps required to decode, processing and resize full-motion video for display on a computer desktop, the output of full-motion video generally consumes a significant amount of memory capacity and memory bandwidth. However, since the ability to display of full-motion video is a now standard feature that is expected in all modern computer systems, computer system designers must design their computer systems to handle the display of full-motion video
In a full personal computer system, there is ample CPU processing power, memory capacity, and memory bandwidth in order to perform all of the needed processing steps for rendering a complex composite desktop image that includes a window displaying a full-motion video. For example, the CPU may decode full-motion video stream to create video frames in a memory system, the CPU may render the normal desktop display screen in a frame buffer, and a video display adapter may then read the decoded full-motion video frames and main frame buffer to create a composite image. Specifically, the video display adapter, combines the decoded full-motion video frames with the desktop display image from the main frame buffer to generate a composite video output signal.
In small computer systems wherein the computing resources are much more limited the task of generating a video output display with advanced feature such as handling full-motion video can be much more difficult. For example, mobile telephones, handheld computer systems, netbooks, tablet computer systems, and terminal systems will generally have much less CPU processing power, memory capacity, and video display adapter resources than a typical personal computer system. Thus, in a small computer the task of combining a full-motion video stream with a desktop display to render a composite video display can be very difficult. It would therefore be very desirable to develop very efficient methods of handling complex display tasks such that complex displays can be output by the display systems in small computer systems.